package models

import (
	"activity_srv/basic/config"
	"time"
)

type CutActivity struct {
	Id        uint32    `gorm:"column:id;type:int UNSIGNED;comment:砍价活动表ID;primaryKey;not null;" json:"id"`                  // 砍价活动表ID
	Title     string    `gorm:"column:title;type:varchar(255);comment:砍价活动名称;not null;" json:"title"`                        // 砍价活动名称
	Image     string    `gorm:"column:image;type:varchar(150);comment:砍价活动图片;not null;" json:"image"`                        // 砍价活动图片
	StartTime time.Time `gorm:"column:start_time;type:datetime;comment:砍价开启时间;not null;" json:"start_time"`                  // 砍价开启时间
	StopTime  time.Time `gorm:"column:stop_time;type:datetime;comment:砍价结束时间;not null;" json:"stop_time"`                    // 砍价结束时间
	Info      string    `gorm:"column:info;type:varchar(255);comment:砍价活动简介;default:NULL;" json:"info"`                      // 砍价活动简介
	Rule      string    `gorm:"column:rule;type:text;comment:砍价规则;" json:"rule"`                                             // 砍价规则
	JoinNum   uint32    `gorm:"column:join_num;type:int UNSIGNED;comment:最多参与次数;not null;" json:"join_num"`                  // 最多参与次数
	Status    int8      `gorm:"column:status;type:tinyint;comment:活动状态 1-待开始 2-已开始 3-已结束;not null;default:1;" json:"status"` // 活动状态 1-待开始 2-已开始 3-已结束
	CreateAt  time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt  time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	DeleteAt  time.Time `gorm:"column:delete_at;type:datetime;default:NULL;" json:"delete_at"`
}

func (c *CutActivity) TableName() string {
	return "cut_activity"
}

// 添加活动
func (c *CutActivity) CreateNewCutActivity() error {
	return config.DB.Create(&c).Error
}

// 修改活动
func (c *CutActivity) UpdateActivity() error {
	return config.DB.Updates(&c).Error
}

// 活动id查活动
func (c *CutActivity) GetById() error {
	return config.DB.Where("id = ?", c.Id).Limit(1).Find(&c).Error
}

// 活动列表 支持状态搜索
func (c *CutActivity) ActivityList() (list []CutActivity, err error) {
	query := config.DB
	if c.Status != 0 {
		query = query.Where("status = ?", c.Status)
	}
	err = query.Find(&list).Error
	return
}

// 删除活动
func (c *CutActivity) DelActivity() error {
	return config.DB.Delete(&c).Error
}
